<?php

class Pergunta {

    //--------------------  atributos da tabela pergunta
    private $idpergunta;
    private $grau_pergunta;
    //--------------------  atributos da tabela area
    private $idarea;
    private $desc_area;
    //--------------------  atributos da tabela subarea
    private $idsubarea;
    private $desc_subarea;
    //--------------------  atributos da tabela pergresp
    private $perresp_correta;
    //--------------------  atributos da tabela dica
    private $iddica;
    private $idresp;
    private $idpais;
    private $resposta_trad;
    //variaveis internas
    private $bd; //conexão com o banco
    private $tabela; //nome da tabela

    public function __construct() {
        $this->bd = new BD();
        $this->perresp_correta = "f";
    }

    public function __get($key) {
        return $this->$key;
    }

    //método de retorno de valores do objeto
    public function __set($key, $value) {
        $this->$key = $value;
    }

    //METODOS
    //BANCO DE DADOS
    public function inserir() {

        $sql = " INSERT INTO pergunta (idpergunta, grau_pergunta, idusuario, idsubarea)
            values ((SELECT MAX(idpergunta)+1 AS proximo FROM pergunta), '$this->grau_pergunta', '$this->idusuario', $this->idsubarea);

            INSERT INTO pergresp (idpergunta, idresposta, perresp_correta)
            VALUES";

        foreach ($this->idresp as $itemid) {

            if ($this->perresp_correta == $itemid) {
                $correta = 't';
            } else {
                $correta = 'f';
            }

            $sql.= " ((SELECT MAX(idpergunta) from pergunta), $itemid, '$correta') ,";
        }
        $sql = substr($sql, 0, -1);

        $sql .= ";
            INSERT INTO perdica (iddica, idpergunta)
            VALUES";

        foreach ($this->iddica as $item) {

            $sql.= " ($item, (SELECT MAX(idpergunta) from pergunta)) ,";
        }

        $sql = substr($sql, 0, -1);

        $sql.= ";
            INSERT INTO tradperg (explica_trad, pergunta_trad, idpais, idpergunta)
            VALUES ( 'vazio', '$this->pergunta_trad', $this->idpais, (SELECT MAX(idpergunta) from pergunta)); ";

        $retorno = pg_query($sql);

        return $retorno;
    }

// --------------------------------------------------------------------------
    public function listar($complemento = "") {
        $sql = "SELECT nome_pais, pergunta_trad, idpergunta FROM tradperg
                INNER JOIN pais on tradperg.idpais = pais.idpais
                ORDER BY idpergunta" . $complemento;

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Pergunta();
            $obj->idpergunta = $reg["idpergunta"];
            $obj->pergunta_trad = $reg["pergunta_trad"];
            $obj->nome_pais = $reg["nome_pais"];


            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function excluir() {

        $sql = "DELETE FROM tradperg WHERE  idpergunta =$this->idpergunta ;

                DELETE FROM perdica WHERE  idpergunta =$this->idpergunta ;

                DELETE FROM pergresp WHERE  idpergunta =$this->idpergunta ;

                DELETE FROM pergunta WHERE  idpergunta =$this->idpergunta ;


                ";
        $retorno = pg_query($sql);
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function atualizarclassificacao() {
        $retorno = false;                                 // nome dos campos
        $sql = "update pergunta set
                grau_pergunta ='$this->grau_pergunta', idsubarea = $this->idsubarea
                where idpergunta = '$this->idpergunta';

                update tradperg set
                idpais ='$this->idpais'
                where idpergunta = '$this->idpergunta'
                ";
        $retorno = pg_query($sql);
        return $retorno;
    }

    // --------------------------------------------------------------------------
    public function atualizarpergunta() {
        $retorno = false;                                 // nome dos campos
        $sql = "update tradperg set
                pergunta_trad ='$this->pergunta_trad'
                where idpergunta = '$this->idpergunta'
                ";
        $retorno = pg_query($sql);
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function atualizarrespostas() {
        $retorno = false;                                 // nome dos campos
        $sql = "DELETE FROM pergresp WHERE  idpergunta =$this->idpergunta ;

                INSERT INTO pergresp (idpergunta, idresposta, perresp_correta)
                VALUES";

        foreach ($this->idresp as $itemid) {

            if ($this->perresp_correta == $itemid) {
                $correta = 't';
            } else {
                $correta = 'f';
            }

            $sql.= " ($this->idpergunta, $itemid, '$correta') ,";
        }
        $sql = substr($sql, 0, -1);

        $retorno = pg_query($sql);
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function atualizardicas() {
        $retorno = false;                                 // nome dos campos
        $sql = "DELETE FROM perdica WHERE  idpergunta =$this->idpergunta ;

                INSERT INTO perdica (idpergunta, iddica)
                VALUES";

        foreach ($this->iddica as $item) {

            $sql.= " ( $this->idpergunta , $item),";
        }

        $sql = substr($sql, 0, -1);

        $retorno = pg_query($sql);
        return $retorno;
    }

// --------------------------------------------------------------------------

    public function retornarunico() {

        $sql = "SELECT  pergunta.*, tradperg.*, subarea.*, area.*, pais.*, nivel.* FROM pergunta
                INNER JOIN tradperg on tradperg.idpergunta=pergunta.idpergunta
                INNER JOIN pais on tradperg.idpais = pais.idpais
                INNER JOIN idioma on idioma.ididioma = pais.ididioma
                INNER JOIN nivel on pais.idpais = nivel.idpais
                INNER JOIN subarea on subarea.idsubarea=pergunta.idsubarea
                INNER JOIN areasub on areasub.idsubarea=subarea.idsubarea
                INNER JOIN area on area.idarea=areasub.idarea
                WHERE pergunta.idpergunta = $this->idpergunta";

        $resultado = pg_query($sql);
        $retorno = NULL;


        $reg = pg_fetch_assoc($resultado);
        if ($reg == true) {
            $obj = new Pergunta();
            $obj->idpergunta = $reg["idpergunta"];
            $obj->pergunta_trad = $reg["pergunta_trad"];
            $obj->idsubarea = $reg["idsubarea"];
            $obj->desc_subarea = $reg["desc_subarea"];
            $obj->grau_pergunta = $reg["grau_pergunta"];
            $obj->desc_area = $reg["desc_area"];
            $obj->desc_nivel = $reg["desc_nivel"];
            $obj->nome_pais = $reg["nome_pais"];


            $retorno = $obj;
        } else {
            $retorno = null;
        }

        return $retorno;
    }

    //---------------------------------------------------------------------------
    public function listarrespostaspergunta() {
        $sql = "SELECT pergresp.*, tradresp.* FROM pergresp
                INNER JOIN tradresp on tradresp.idresposta=pergresp.idresposta
                WHERE pergresp.idpergunta = $this->idpergunta
                ORDER by pergresp.idresposta;";



        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Pergunta();
            $obj->resposta_trad = $reg["resposta_trad"];
            $obj->idresposta = $reg["idresposta"];
            $obj->perresp_correta = $reg["perresp_correta"];


            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

    //---------------------------------------------------------------------------
    public function listardicaspergunta() {
        $sql = "SELECT perdica.*, traddica.* FROM perdica
                INNER JOIN traddica on traddica.iddica=perdica.iddica
                WHERE perdica.idpergunta = $this->idpergunta
                ORDER by perdica.iddica;";



        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Pergunta();
            $obj->iddica = $reg["iddica"];
            $obj->trad_dica = $reg["trad_dica"];


            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

    //---------------------------------------------------------------------------
    public function listararea($complemento = "") {
        $sql = "SELECT * FROM area " . $complemento;

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Pergunta();
            $obj->idarea = $reg["idarea"];
            $obj->desc_area = $reg["desc_area"];


            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

//---------------------------------------------------------------------------
    public function listarareaunico() {
        $sql = "SELECT * FROM area where idarea = '$this->idarea' ";

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Pergunta();
            $obj->idarea = $reg["idarea"];
            $obj->desc_area = $reg["desc_area"];


            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

//---------------------------------------------------------------------------
    public function listarsubarea($complemento_subarea = "") {
        $sql = "SELECT * FROM areasub
                inner join subarea on areasub.idsubarea=subarea.idsubarea" . $complemento_subarea;

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Pergunta();
            $obj->idarea = $reg["idarea"];
            $obj->idsubarea = $reg["idsubarea"];
            $obj->desc_subarea = $reg["desc_subarea"];


            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

//---------------------------------------------------------------------------
    public function listarsubareaunico() {
        $sql = "SELECT * FROM areasub
                inner join subarea on areasub.idsubarea=subarea.idsubarea
                where areasub.idsubarea = $this->idsubarea";

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Pergunta();
            $obj->idarea = $reg["idarea"];
            $obj->idsubarea = $reg["idsubarea"];
            $obj->desc_subarea = $reg["desc_subarea"];


            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

//------------------------------------------------------------------------

    public function listarpais($complemento = "") {
        $sql = "SELECT * FROM pais " . $complemento;

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Resposta();
            $obj->idpais = $reg["idpais"];
            $obj->nome_pais = $reg["nome_pais"];


            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

//------------------------------------------------------------------------

    public function listarpaisunico() {
        $sql = "SELECT * FROM pais
                where idpais = $this->idpais";

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Resposta();
            $obj->idpais = $reg["idpais"];
            $obj->nome_pais = $reg["nome_pais"];


            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

// --------------------------------------------------------------------------

    public function listarnivel($complemento_nivel = "") {
        $sql = "SELECT * FROM nivel
               -- inner join subarea on areasub.idsubarea=subarea.idsubarea
                --where areasub.idarea = " . $complemento_nivel;

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Pergunta();
            $obj->idnivel = $reg["idnivel"];
            $obj->desc_nivel = $reg["desc_nivel"];
            $obj->idpais = $reg["idpais"];
            $obj->idsubarea = $reg["idsubarea"];


            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

// --------------------------------------------------------------------------

    public function listarnivelunico() {
        $sql = "SELECT * FROM nivel
               where idnivel = $this->idnivel ";

        $resultado = pg_query($sql);
        $retorno = NULL;

        //percorre os registros
        while ($reg = pg_fetch_assoc($resultado)) {
            //transforma em objetos categoria
            $obj = new Pergunta();
            $obj->idnivel = $reg["idnivel"];
            $obj->desc_nivel = $reg["desc_nivel"];
            $obj->idpais = $reg["idpais"];
            $obj->idsubarea = $reg["idsubarea"];


            //adiciona a variavel de retorno
            $retorno[] = $obj;
        }
        return $retorno;
    }

// --------------------------------------------------------------------------
    public function sorteia() {

    }

// --------------------------------------------------------------------------

    /* public function listarJoin($complemento = "") {
      $sql = "SELECT * FROM $this->tabela ". $complemento;

      $sql = "select usuario.*, instituicao.nome_instituicao as nome_instituicao
      from usuario
      inner join
      instituicao on
      usuario.idinstituicao = instituicao.idinstituicao
      ".$complemento;


      $resultado = pg_query($sql);
      $retorno = NULL;

      //percorre os registros
      while ($reg = pg_fetch_assoc($resultado)) {
      //transforma em objetos categoria
      $obj = new Usuario();
      $obj->idusuario       = $reg["idusuario"];
      $obj->nome_usuario    = $reg["nome_usuario"];
      $obj->senha_usuario   = $reg["senha_usuario"];
      $obj->email_usuario   = $reg["email_usuario"];
      $obj->dtlogin_usuario = $reg["dtlogin_usuario"];
      $obj->idinstituicao   = $reg["idinstituicao"];
      $obj->nivel           = $reg["nivel"];
      $obj->permissao       = $reg["permissao"];

      $obj->nome_instituicao   = $reg["nome_instituicao"];

      //adiciona a variavel de retorno
      $retorno[] = $obj;
      }
      return $retorno;
      } */
}

?>